{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LSGANs - Least Squares Generative Adversarial Networks\n",
    "\n",
    "Brief introduction to Least Squares Generative Adversarial Networks or LSGANs. This notebook is organized as follows:\n",
    "\n",
    "1. **Research Paper**\n",
    "* **Background**\n",
    "* **Definition**\n",
    "* **Training WGAN with MNIST dataset, Keras and TensorFlow**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Research Paper\n",
    "\n",
    "* [Least Squares Generative Adversarial Networks](https://arxiv.org/pdf/1611.04076.pdf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Background\n",
    "\n",
    "**Generative adversarial nets** consists of two models: a generative model $G$ that captures the data distribution, and a discriminative model $D$ that estimates the probability that a sample came from the training data rather than $G$.\n",
    "\n",
    "The generator distribution $p_g$ over data data $x$, the generator builds a mapping function from a prior noise distribution $p_z(z)$ to data space as $G(z;\\theta_g)$.\n",
    "\n",
    "The discriminator, $D(x;\\theta_d)$, outputs a single scalar representing the probability that $x$ came form training data rather than $p_g$.\n",
    "\n",
    "The **value function** $V(G,D)$:\n",
    "\n",
    "$$ \\underset{G}{min} \\: \\underset{D}{max} \\; V_{GAN}(D,G) = \\mathbb{E}_{x\\sim p_{data}(x)}[log D(x)] + \\mathbb{E}_{z\\sim p_{z}(z)}[log(1 - D(G(z)))]$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Definition\n",
    "\n",
    "Least Squares Generative Adversarial Networks (LSGANs) adopt the **least squares loss function** for the discriminator. \n",
    "\n",
    "The least squares loss function is able to move the fake samples toward the decision boundary, because the least squares loss function penalizes samples that lie in a long way on the correct side of the decision boundary. \n",
    "\n",
    "Another benefit of LSGANs is the improved stability of learning process.\n",
    "\n",
    "### Network Design\n",
    "\n",
    "<img src=\"../../img/network_design_gan.png\" width=\"600\"> \n",
    "\n",
    "\n",
    "### Cost Funcion\n",
    "\n",
    "$$ \n",
    "\\begin{aligned}\n",
    "    \\underset{D}{min} \\; V_{LSGAN}(D,G) =& \\frac{1}{2} \\mathbb{E}_{x\\sim p_{data}(x)}[(D(x)-b)^2] + \\frac{1}{2} \\mathbb{E}_{z\\sim p_{z}(z)}[(D(G(z))-a)^2] \\\\\n",
    "    \\underset{G}{min} \\; V_{LSGAN}(D,G) =& \\frac{1}{2} \\mathbb{E}_{z\\sim p_{z}(z)}[(D(G(z))-c)^2]\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "where $a$ and $b$ are the labels for fake data and real data, respectively, and $c$ denotes the value that G wants D to believe for fake data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Training LSGANs with MNIST dataset, Keras and TensorFlow\n",
    "\n",
    "* Data\n",
    "    * Rescale the MNIST images to be between -1 and 1.\n",
    "\n",
    "* Generator\n",
    "    * **Simple fully connected neural network**, **LeakyReLU activation** and **BatchNormalization**.\n",
    "    * The input to the generator is called 'latent sample' (100 values) which is a series of randomly generated numbers, and produces 784 (=28x28) data points which represent a digit image. We use the **normal distribution**.\n",
    "        The last activation is **tanh**.\n",
    "\n",
    "* Discriminator\n",
    "    * **Simple fully connected neural network** and **LeakyReLU activation**.\n",
    "    * The last activation is **sigmoid**.\n",
    "\n",
    "*  Loss\n",
    "    * loss='mse'\n",
    "\n",
    "* Optimizer\n",
    "    * Adam(lr=0.0002, beta_1=0.5)\n",
    "\n",
    "* batch_size = 64\n",
    "* epochs = 100\n",
    "\n",
    "\n",
    "### 1. Load data\n",
    "\n",
    "#### Load libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:01.518979Z",
     "start_time": "2018-08-09T20:02:01.162370Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:02.904841Z",
     "start_time": "2018-08-09T20:02:01.520988Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.datasets import mnist\n",
    "from keras.models import Sequential, Model\n",
    "from keras.layers import Dense, LeakyReLU, BatchNormalization\n",
    "from keras.layers import Input, Flatten, Reshape\n",
    "from keras.optimizers import Adam\n",
    "from keras import initializers\n",
    "from keras import backend as K"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Getting the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:03.108652Z",
     "start_time": "2018-08-09T20:02:02.907072Z"
    }
   },
   "outputs": [],
   "source": [
    "# load dataset\n",
    "(X_train, y_train), (X_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Explore visual data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:03.611045Z",
     "start_time": "2018-08-09T20:02:03.111061Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Z86cCeSelMJW0zbbbAPkj0W14ImqVTjiiCMAOPPMM4HCT7HFtMLr1VprrQXkyglg2223BWDjjTee7+tWXXXV9PjEE08sT+Yi07lzZyD33dp///3Tc94qX2211YD871ux37MePXoAcMstt6Rpf/zjHwGYMWNGkbmuLG9B+t+vhx9+uJrZSW211VYAvPbaaxV5P7WgREQkSqqgREQkSlF28S211FLp8RZbbAHA4MGDgfwukUI+/PBDAAYMGADA/fffn54bM2YMkBvwB7jssstKkOP6teaaawKw5JJLVjkn8dhwww3TY+8yOvjggwFo27Ztes4sMwb82WefpWneBb3RRhsBcMABB6TnfELA+++/X45sR8N/57p161aR9/OlJwB33HEHkPtbECufeLTeeusB1e3i825XgLXXXhvI/V2A3Pe8LO9dtjuLiIi0QJQtqFtvvTU97tOnT1Gv9RaXT+0Npz37U8kmm2zSwhzWt65du6bHffv2zTsXPt13794dgP/85z+VyViV+GScK664AoDevXun53wqeSHemt99993TNJ9G7eW44oorpufC43r23HPPAYVbUP/973+BXEsnfHovNEFnu+22A3JTneuFt/r+8Y9/VDkn+b1WRx99NJDr0YLytvjVghIRkSipghIRkShF1cXnsfV8tT00HoALu+wee+wxAK688so07csvvwTgzTffBGDq1KnpuZ133rngPSVj++23B+DOO+9M07x7yw0cODA9njhxYmUyVmU9e/YE4He/+91Cr/3444/T41133RXInySx7rrrljh3tefmm28G4JFHHml0bu7cuQBMmjSpSffyKDJvv/02kFs/FQrf5/XXXy8us1USdm1W2+23394ozbuvyy2eUhAREQlE0YLy+Ho+eBrG1vPV40899RSQP2nCB0bDaeNe23/99dcAjBs3Lj3ng6xhC80nVSjSORx++OFA4afQkSNHArko8a1JGOmgoQkTJgC5lfVhJImw5eR8enlrNm/ePKBw+RTLJ6Asv/zy873m888/T49LHO+wpMLJWx07dqxiTvI17EWB3N/qclMLSkREolS1FlQYwfj0008HcjX15MmT03NfffUVAHfffTcAs2bNSs898cQTef82VbiY8tRTTwVyCy1bm3Bq829/+1sgfzrvtGnTALj44osrm7GI+NTaY445BoBnn302PffRRx8BuenRCxPTk3GtCqOT+/+b8He6oX79+pU9T6UQTrtf0OepFP+u+uLc0BdffFGRPKgFJSIiUVIFJSIiUap4F98SSywB5E8N96atxykLY2f5tNByNXnXWGONstw3dr49RLh9SSGDBg0C4IUXXih3lqLlSxf69+/f4nv5FhzSNGHX+1lnnQXkT9X3yByFvPXWW0Bu6nrsNthgg0Zp77zzThVykuF/o8Nu6Q8++ADI/a0uN7WgREQkShVvQW2++eZA4Thce++9N9D8bcOl6fbYYw+gcFzCv//97+nxddddV7E81TLfbHDppZde4HU///nP8/775ZdfTo9jiLtWCd56P/TQQ4H82I8N+eJxWPCGhb4BobeyAJ588kkA5syZ0+y8Vlu5Nwb0JT3+9wDgkEMOAWC33XZrdP1FF10E5CZPlZtaUCIiEqWKt6CuvvpqID/ckLeYyt1y8vAhhaIitxb77LMPAJdffnmjcy+99BKQW7ALMH369MpkrAb4PmWdOnVK0/70pz8BhXsEFvR983GtI488Mk374YcfSpfZyITb3j/66KNAacd/R48eDcBtt91WsnvGoEOHDk26btNNNwVyf1fDVunqq68OwOKLLw7kj+v5dzRsZb766qtAblHzoovmqomxY8cW9wFaSC0oERGJkiooERGJUkW6+HxjO8jF3QsHPL3JX27e1RK+t09FrWc+KA0Lnlb+ySefAPW/AWFThNOXfWKPl124gZt3jXiXXTjRwQeevWsw5N0m++67b5rmE1K+//77ln+AiHk3VFN2FVjYhoXO/8bsueeeaZrH76wVYTeb/4265ZZbADjnnHMW+Fqf7ORl6vEOAb755hsA3n33XQD+8pe/pOd8GU84vOK//x7DMFziU87NCQtRC0pERKJUkRZUWAP7QF0Yu+yBBx4o+Xv6guBCiytHjBiRHp999tklf+/YhBG2F/QUWmjiRGvj389w2u2wYcPyrrngggvSY/8ujRkzBsgf1PZz4QQBt9JKKwFw2WWXpWmffvopkL9/UczRt4vh+zUB7LTTTkBuOvMzzzyTnvv2228Xeq+jjjoqPe7bt2+Jclh9xx9/fHrse635lvYL0/C7895776XnXnnllaLy4TEn/TvqPSvVoBaUiIhESRWUiIhEqWrbbYRdF76lRil4155vYuhbeUBu0O+qq65K08LtO+qNT0gptCLcDR8+PD0eP3582fMUo3BChHffhd8b54PuHp8QcivqvTvEoxdALmpEOOlhwIABQK7bz6OnAAwZMgSA559/Pk274oorAJg6dWqj/NTqBB/vvrrkkkua9fqw276euvhC/v+9GnbZZZe8/15YvM5yUgtKRESiVLUWVCmnlntLAXJPvr179wbyWwi9evUq2XvWAt9Yr9B22D5wesQRR1QyS1Fp06YNkIsvBnDaaacBMHv27DTN47vdf//9QH4csi5dugBwww03ALkp6QAffvghAMcdd1ya5lHhPQZaOAjuK/x79OiRpjXcWjvcJr3QRnKtgW/zLpXx8MMPV+291YISEZEoVaQFFS7I82OPCQdw0kknNeu+J598MgDnn39+mubbxnt/fri3VGuzwgorAIWnlt90001AfY/BLYxPp/VWE+QWNR577LFpmrdEt9lmGyA/fp4vDPWlFBdeeGF67s477wTyWz3Oo28//fTTaZof9+nTJ0076KCD8l7n3/mYhWN6Pv4ZLu1obnRxL3dF2G891IISEZEoqYISEZEoVaSLL4x958errLJKmnb99dcDuRhRU6ZMSc95t4pvbuZh5SEXRt5XUUNuVbp3YbVG3rUUxjFrKNwor7Xq169fozSfOBFOM/dpzeFW4w35NWFkiOZunzF06NCCx7HzzQXPPffcNG3XXXcF8id0FOrybMgjcoTbmPhWPYViG3q3YVMiUUjT+HDM+uuvn6YVG5WipdSCEhGRKFVtmrk/qUIuBpVPA/cBZID11ltvvvfwVoBP3YXCT8WtQTjV3jcr88kR4ULRG2+8EVDEcoBJkyYBuUW2kFvoHbbUnS/CffHFF9M0j302YcIEoL43HVwYn2pfKPbgGWeckR7PnDlzoffyltcWW2yRphXa8n3kyJEA3HzzzUD+3wJpGS/vBfXElJtaUCIiEiVVUCIiEqWKdPGFm7i99tprAGy11VaNrvOJEx07dmx0zidO+Gp+aP76qXq03HLLpcfhBBSAL774Ij0O1/y0djvssAOQvybPu5TC7WB88o7Hw6v3DQXLIYym0Vz+/+Sxxx5L0/xvgCZHlM+2226bHt91110VfW+1oEREJEoVaUF5FHHIbXEdrtT3yOOF+KpxHwT96KOPypFFaYV8sP7ee+9N08JjKY7HdQwjjB9++OFF3ePjjz8GchE9Ro8enZ677bbbgPzND6V8wghA1aIWlIiIRKni08x976dwT5dC27JLcd5///302Kff+8JJkUrw/anCrcv/+c9/AnDxxRenaR5d36fohxHbffcBXwIglef7nu2///5VzolaUCIiEilVUCIiEiUrtDp7vhebNf3iOpckSYtHEFWeOSrPkhubJEmXltxA5ZmnxeUJKtNQU37n1YISEZEoqYISEZEoqYISEZEoqYISEZEoqYISEZEoqYISEZEoFRtJYjIwsRwZqTFrlug+Ks8MlWfplaJMVZ45+o6WVpPKs6h1UCIiIpWiLj4REYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYlSVSsoM+tvZoOrmYd6ovIsPZVpaak8S6vey7PsFZSZHWRmr5vZLDP7ysyeMrPty/2+88nLBDObk83LLDN7thr5aImYyjObn5PM7N9mNtvM3jOz9auVl+aKpUzNbI3gu+k/iZmdWum8tEQs5ZnNy2ZmNtrMppvZ52bWrxr5aInIynM7M/unmc00s/8rdz7KWkGZ2SnAtcClQEdgDeAmYO9yvu9C/CZJknbZn92qmI+ixVaeZvY74ChgL6Ad0B2YXI28NFdMZZokyafBd7Md8HPgR+ChSueluWIqz6z7gBeBDsCOwHFm1qNKeSlaTOVpZh2AR4GBwHLAAOAxM1u+bG+aJElZfoBlgVnA/gu4pj8wOPjvvwGTgOlkvlSdg3PdgHeBmcAXwGnZ9BWBx4FpwP+A0cAi83m/CUDXcn3mcv7EVp5kHm4+A3apdtnUS5kWeO8/AS9Uu5xquTyBb4BODd7v7GqXVS2WJ5kH0HcapH0AHFWuMihnC2pbYEng4SJe8xSwHrAy8AYwJDh3B3BskiTLABsDI7LppwKfAyuRecI4B0gW8B5DzOxrM3vWzDYtIm/VFlt5rp792djMPst2811gZrU08Sa2Mm3oMODuIvJWbTGW57XAYWa2mJltkM3j80Xkr5piK0/L/jRM27iI/BWlnH9MVgAmJ0kyr6kvSJLkL0mSzEyS5DsyTwabmtmy2dNzgU5m1j5JkqlJkrwRpK8KrJkkydwkSUYn2aq9gIOBtYA1gReAZ8xsuaI/WXXEVp6rZ//djUxX1K+BPmS6/GpFbGWaMrNfkflj8WCRn6maYizPx4H9gDnA+8AdSZK8VvxHq4rYyvNlYDUz65Ot8A8HfgYs1czPt1DlrKCmACua2aJNudjM2pjZ5Wb2sZnNINMdB5nmJ0AvMk3UiWY2ysy2zaYPBD4CnjWzT8zsrPm9R5IkY5IkmZMkyTdJklxGpkn7q+I/WlXEVp5zsv8OSJJkWpIkE4Bbs/esFbGVaehw4KEkSWY19cNEIKryzI6ZPA1cSKYl8lNgdzM7vhmfrRqiKs8kSaaQGfs6BfgPsAeZ1ujnxX+0JipX3yG5/tP9FnBNf7L9p8ChwHvA2mSajcuRaWau2+A1iwEnA58VuF9n4L80cVwk+349ylUG9VyeZJ6avgN2CNJOBR6udlnVapkG17QlM4awc7XLqJbLE+gCTG2Q9kfg8WqXVS2WZ4FrFwUmAruXqwzK1oJKkmQ60A+40cz2MbOlss3CPc1sQIGXLEPmD94UMn/8LvUTZra4mR1sZssmSTIXmAH8kD3X3czWNTML0n9oeHPLTOH9ZfZeS5rZ6WSeLMaU9pOXR2zlmSTJN8ADwBlmtoyZrQ4cTaZLpSbEVqaBnmRa9y+U4GNWTITl+UHmcjvIzBYxs1WA3sC40n3q8omwPDGzzbN5aA9cCXyeJMkzpfvUDVTgKeBg4HVgNpnZJU8A2xWo/dsBw8nMMJlIZoA4AdYFFifTVJ9KpgBfA7bPvu5kMk3Z2WSamufPJx+dgf/LXjcF+DvQpdpPSbVantlr2wP3Z9/jMzK/TFbtMqrlMs1e/wxwUbXLpR7KE9g5+9rp2bz8GViq2mVUw+U5NFuW08k8oK5czs9u2TcVERGJSi1NCRYRkVZEFZSIiERJFZSIiERJFZSIiERJFZSIiESpSSuUnZlpyl9WkiQNY1IVTeWZo/IsuclJkqzUkhuoPPO0uDxBZRpqyu+8WlAi9WlitTNQZ1SeVaAKSkREoqQKSkREolTUGJS0Duuvn9u1/emnnwagTZs2AKy55ppVyZOItD5qQYmISJTUgpLUoEGDAOjdu3ea1qFDBwAef7xmgpSLSJ1QC0pERKKkCkpERKKkLr5WqmPHjgAMGzYsTdtmm20ACLdgefvttwE46qijKpg7ERG1oEREJFLRt6B8evOyyy4732tOOOGE9HippZYCYIMNNgDgD3/4Q3ruyiuvBKBPnz5p2rfffgvA5ZdfDsAFF1xQimxHy6eQe1n84he/aHTN2WefnR6//vrrAEyZMqUCuRNpmaWXXjo9HjlyJACrrbZamvbLX/4SgAkTJlQyW9JMakGJiEiUqtaCWmONNdLjxRdfHIDtttsOgO233z49t9xyywHQq1evou7/+eefA3D99denaT179gRg5syZadq4ceMAGDVqVFH3r1U+bbxbt27zvcbLDuCFF14oe55EmsJbQiut1Dhm69SpUwH49a9/naZtueWWAIwfPz5NU09AbVELSkREoqQKSkREolTxLr7NNtsMgBEjRqRpC5oAUawff/wRgPPOOw+AWbNmpeeGDBkCwFdffZWmeddA2A1Qb8LYevfddx8AZo23Ytl3330BGD58eGUyVudOPfVUINeFDbDRRhsBcPDBBze6/v333wegc+fOFchdPDbeeOP0+MQTTwQKx3z073E4POB8klOnTp3SNP+Of/HFF2la+P+itfCJUIcccggAO+64Y3qu0HfttNNOA+DLL78E8odcBg8eDMCrr75answ2oBaUiIhEqeItqE8//RTIH6wspgUV1tzTpk0D8gdGv//+ewDuvffeFuWznhx66KHpsT99PvnkkwD8/ve/T8+FT5rSNP406q2A8OnUJ+UUaq2Gi6HdeuutB8C7776bpoUtgnq18847p8cLWhD+3XffAbmn+PC1Z511VqPrvYzvuuuuNK21TJII42led911AKy44opA/vfRp+KHE08GDhyYd6/wer/uwAMPLG2G50MtKBERiZIqKBERiVLFu/j+97//AXD66aenad27dwfgzTffBPLXLrm33noLgF133TVNmz17NpA/0HfSSSeVOMe16+WXXwZyE1Mgt4L+5JNPBtStNz+rrrpqejx06FAA1llnnUbXefe0RzAIu0PGjh0LwBZbbNGk91xkkUXy7lXv+vfvD+T/LXB33303AF9//XWa5tFPwjT/bj/zzDNArhsrvO7BBx8sYa7jtOiimT/lXbp0AeDPf/5zes6j67z44osAXHTRRem5l156CYAlllgiTfvrX/8KwG677dbofTyyTKWoBSUiIlGqWiSJRx55JD32Kece4WHTTTdNz/mgqT89easp9M4776THxxxzTOkzW2P23ntvIDe9NByQ/9vf/gbkYhBKvq5duwL5T6A//elPm/z6cFLD5MmTgfyneo+GcOeddwKw+uqrN7pHOEminnlLsW3btmnaxIkTATj33HOB/CUhbt11102PzznnHCA3eB/+ffAWWmv4rvsU8ttvv73Rueeeew7ITZyYMWNGo2vCSRUNW05hZBlv2VaKWlAiIhKlKKKZN6zRp0+f3uiao48+GoAHHnggTfNFuZKLWQjwq1/9ar7X+cLk8KloQXxMr1Arwhf01ZMzzjgDWHCryac7A5x55pkAvPLKK0DhBd/h1GYvz0ItJx8fDJcF1DMfG9pjjz3SNG+B+sLb448/Pj3n431XX311mrbXXnsBubHtSy65JD138803lyPb0QjHkrwl6b0lN910U3rOgxYUajk5b7EW4ounIX/8rxLUghIRkSipghIRkShF0cXXkA9uQi5kvq/Q90FsgGeffbai+YrZDz/8kB57mfm05bAr1KeaFuJTz0N9+/YFCsdG81hzYXdVLU5bDweFfdv7QjwKStgFN2bMmKLeq1DXnvMYiD65ot750hHvHoVcF59HiAiXlVxzzTVA4Vh8vtHooEGDypPZiPTr1w/IdetBLoKOT7f3rmeAOXPm5L1+ySWXTI/9ux+WqS+VuPjii4HqxuZUC0pERKIUZQsqnCrqkyPeeOMNIH/6r2+mFy4eu/HGG4HCsc7qWRgDzidJeMvJn/yh8dN5uIjXX9ejR49G9/f/J+Hkig022ADIXwjpMbp8unAt8JYg5BY1hnzBsz+lN7XVtPzyywP5kwB22GGHgveGXHzE1sInmxQavPfp+A899FCa5k/24e/2HXfcAeQvW6lH4SQonzgSloO3nPbZZ5/53sOn5/uuDpDrbQn57/OAAQNakOPSUAtKRESiFGULKvTxxx8DcMQRRwC5BY6QGwsIxwR88d8999wDFF7oV0+WWWYZANZee+1G53w/lzCy+0cffQTk9tYJw8z4At+wleXjfFdddRWQH3neF1iXcj+varjtttvSY19UGy51OOiggwCYNGlSUff1SPHhdGDni8sPOOCA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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "for i in range(10):\n",
    "    plt.subplot(2, 5, i+1)\n",
    "    x_y = X_train[y_train == i]\n",
    "    plt.imshow(x_y[0], cmap='gray', interpolation='none')\n",
    "    plt.title(\"Class %d\" % (i))\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    \n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Reshaping and normalizing the inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:03.616255Z",
     "start_time": "2018-08-09T20:02:03.612986Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train.shape (60000, 28, 28)\n",
      "X_train reshape: (60000, 784)\n"
     ]
    }
   ],
   "source": [
    "print('X_train.shape', X_train.shape)\n",
    "\n",
    "# reshaping the inputs\n",
    "X_train = X_train.reshape(60000, 28*28)\n",
    "# normalizing the inputs (-1, 1)\n",
    "X_train = (X_train.astype('float32') / 255 - 0.5) * 2\n",
    "\n",
    "print('X_train reshape:', X_train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Define model\n",
    "\n",
    "#### Generator\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:06.592374Z",
     "start_time": "2018-08-09T20:02:05.526273Z"
    }
   },
   "outputs": [],
   "source": [
    "# latent space dimension\n",
    "latent_dim = 100\n",
    "\n",
    "# imagem dimension 28x28x1\n",
    "img_dim = 784\n",
    "\n",
    "init = initializers.RandomNormal(stddev=0.02)\n",
    "\n",
    "# Generator network\n",
    "generator = Sequential()\n",
    "\n",
    "# Input layer and hidden layer 1\n",
    "generator.add(Dense(128, input_shape=(latent_dim,), kernel_initializer=init))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Hidden layer 2\n",
    "generator.add(Dense(256))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Hidden layer 3\n",
    "generator.add(Dense(512))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Output layer \n",
    "generator.add(Dense(img_dim, activation='tanh'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Generator model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:06.601583Z",
     "start_time": "2018-08-09T20:02:06.594445Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_1 (Dense)              (None, 128)               12928     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_1 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 128)               512       \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 256)               33024     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_2 (LeakyReLU)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 256)               1024      \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 512)               131584    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_3 (LeakyReLU)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_3 (Batch (None, 512)               2048      \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 784)               402192    \n",
      "=================================================================\n",
      "Total params: 583,312\n",
      "Trainable params: 581,520\n",
      "Non-trainable params: 1,792\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "generator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:07.436658Z",
     "start_time": "2018-08-09T20:02:07.134694Z"
    }
   },
   "outputs": [],
   "source": [
    "# Discriminator network\n",
    "discriminator = Sequential()\n",
    "\n",
    "# Hidden layer 1\n",
    "discriminator.add(Dense(128, input_shape=(img_dim,), kernel_initializer=init))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Hidden layer 2\n",
    "discriminator.add(Dense(256))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Hidden layer 3\n",
    "discriminator.add(Dense(512))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Output layer\n",
    "discriminator.add(Dense(1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Discriminator model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:07.443796Z",
     "start_time": "2018-08-09T20:02:07.438685Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_5 (Dense)              (None, 128)               100480    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_4 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 256)               33024     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_5 (LeakyReLU)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_7 (Dense)              (None, 512)               131584    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_6 (LeakyReLU)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dense_8 (Dense)              (None, 1)                 513       \n",
      "=================================================================\n",
      "Total params: 265,601\n",
      "Trainable params: 265,601\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "discriminator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Compile model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Compile discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:07.842045Z",
     "start_time": "2018-08-09T20:02:07.804575Z"
    }
   },
   "outputs": [],
   "source": [
    "# Optimizer\n",
    "optimizer = Adam(lr=0.0002, beta_1=0.5)\n",
    "\n",
    "discriminator.compile(optimizer=optimizer, loss='mse', metrics=['binary_accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Combined network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:08.602791Z",
     "start_time": "2018-08-09T20:02:07.844004Z"
    }
   },
   "outputs": [],
   "source": [
    "discriminator.trainable = False\n",
    "\n",
    "z = Input(shape=(latent_dim,))\n",
    "img = generator(z)\n",
    "decision = discriminator(img)\n",
    "d_g = Model(inputs=z, outputs=decision)\n",
    "\n",
    "# Optimize w.r.t. MSE loss instead of crossentropy\n",
    "d_g.compile(optimizer=optimizer, loss='mse', metrics=['binary_accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:08.610389Z",
     "start_time": "2018-08-09T20:02:08.604800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, 100)               0         \n",
      "_________________________________________________________________\n",
      "sequential_1 (Sequential)    (None, 784)               583312    \n",
      "_________________________________________________________________\n",
      "sequential_2 (Sequential)    (None, 1)                 265601    \n",
      "=================================================================\n",
      "Total params: 848,913\n",
      "Trainable params: 581,520\n",
      "Non-trainable params: 267,393\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "d_g.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. Fit model\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:01:56.549495Z",
     "start_time": "2018-08-09T20:02:08.612634Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 1/100, d_loss=0.159, g_loss=0.474                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 2/100, d_loss=0.202, g_loss=0.447                                                                                                                        \n",
      "epoch = 3/100, d_loss=0.220, g_loss=0.415                                                                                                                                                                                                                            \n",
      "epoch = 4/100, d_loss=0.181, g_loss=0.366                                                                                                                        \n",
      "epoch = 5/100, d_loss=0.235, g_loss=0.328                                                                                                                        \n",
      "epoch = 6/100, d_loss=0.204, g_loss=0.370                                                                                                                        \n",
      "epoch = 7/100, d_loss=0.188, g_loss=0.363                                                                                                                        \n",
      "epoch = 8/100, d_loss=0.179, g_loss=0.408                                                                                                                        \n",
      "epoch = 9/100, d_loss=0.185, g_loss=0.356                                                                                                                        \n",
      "epoch = 10/100, d_loss=0.224, g_loss=0.450                                                                                                                        \n",
      "epoch = 11/100, d_loss=0.126, g_loss=0.401                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 12/100, d_loss=0.206, g_loss=0.398                                                                                                                        \n",
      "epoch = 13/100, d_loss=0.193, g_loss=0.403                                                                                                                        \n",
      "epoch = 14/100, d_loss=0.183, g_loss=0.465                                                                                                                        \n",
      "epoch = 15/100, d_loss=0.169, g_loss=0.473                                                                                                                        \n",
      "epoch = 16/100, d_loss=0.142, g_loss=0.396                                                                                                                        \n",
      "epoch = 17/100, d_loss=0.165, g_loss=0.394                                                                                                                        \n",
      "epoch = 18/100, d_loss=0.176, g_loss=0.393                                                                                                                        \n",
      "epoch = 19/100, d_loss=0.181, g_loss=0.414                                                                                                                        \n",
      "epoch = 20/100, d_loss=0.184, g_loss=0.360                                                                                                                        \n",
      "epoch = 21/100, d_loss=0.189, g_loss=0.407                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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mTkiyrMnNxfk4/jnP/+5RlecDmeddRYAiy66aNamzx7vweWXXx6AWWedFYCjjz466/vPf/4D5JlLapFLUzF/ACeddFKhbxJuvYbSlUgiio30exdjuXS/6nkui+UaMWIEUIxlPO+884Dic63X7brrrkBxjFZddVWg6Ca86KKLAPjd734H5GKJWmALyhhjTJLU1YIqKwGsrAZRGi6RhCTK2swrI0oktRq94oorsjbl6Tr++ON7dO2NQjJroc8uaxLyFelzzz0H5NHcUFzp95TPPvsMKErPJZ/WCi5KWxUW8O6773Y4VytZTpLJQr6hfuutt2ZtEtxo9fjwww9nffru2meABhg1ahRQtFJloUWrobdwzTXXAPDWW29lbcqNqbAPyDPFaFxiKMi+++5b12tMuZR8fGba/3bGPllOMU+hxB76XY2/fzvttBOQi6vKxiC23X777UDuOdhrr706XOPrr7+etc0111wADB48GKhN8UNhC8oYY0ySNFxmrtlV+aEArrrqKiAP5ot5nrpCfvw99tijw/nPPPNMIA9WrTX1kkWPHTsWKErttSqSXz4GFz755JMAjB49OmuL+d06QyubKItWFvO4AtYewi677NLhHJICK0gQ4NRTTwWqX6k2U2YeV3zy3ccVovZBNFbRGvi///u/wv9Fusr3NnDgQKC4H1BjGi4zX3/99QG48sorszZJjmNohOTIL7/8ck8ur9HUXWYe7yE9n921+OIetp5T7d9H6b6s2Cj11/Mfq0QI7fvH706/29G7VQmWmRtjjGlZPEEZY4xJkiRy8akI1i9/+ctJvj4WK1Nk+eWXX561STSgDT5FPteaVDIfaFzkXoFcNFImPZccWlLVKFlfeumlATj44IOztvnnnx/oWqou8QbAggsuWNX1TznllHzzzTd8//33TRvPstx6sUSJspNIOLHjjjtmfeussw6Q5x9TuQjIhS7x/HIXxvPXiYa5+PT55NKM2USU7SDmetNzq/LhLUJTM0n08D2BvMxGdD1LGq6MEgArrrhip+dSXsOYW1HZfsqEQl1hF58xxpiWpeEWlDZL44aaNge32GILIBdNQMesz3F1Jpll3LBToGv7Mse1phYWVN++fdsGDRpUyNVWhj5TzOTenihb3nvvvYHcgpJ8HPLchGXyaL1PDETtSsauc8TXdFdW2kyLtCwHYRSp/P3vfwfK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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 22/100, d_loss=0.146, g_loss=0.461                                                                                                                        \n",
      "epoch = 23/100, d_loss=0.186, g_loss=0.427                                                                                                                        \n",
      "epoch = 24/100, d_loss=0.171, g_loss=0.425                                                                                                                        \n",
      "epoch = 25/100, d_loss=0.185, g_loss=0.371                                                                                                                        \n",
      "epoch = 26/100, d_loss=0.177, g_loss=0.383                                                                                                                        \n",
      "epoch = 27/100, d_loss=0.171, g_loss=0.391                                                                                                                        \n",
      "epoch = 28/100, d_loss=0.143, g_loss=0.419                                                                                                                        \n",
      "epoch = 29/100, d_loss=0.158, g_loss=0.375                                                                                                                        \n",
      "epoch = 30/100, d_loss=0.160, g_loss=0.445                                                                                                                        \n",
      "epoch = 31/100, d_loss=0.200, g_loss=0.450                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3XeYXFX9x/H3ktCE0BI6IaGX0KQLAiIQWgQp0kLvJRhQUMAfSOjgI1KFR3oHlSJKr0JECEU60kLoAULovezvD/yce+7s3dmZ3Ts7Zzaf1/P4cL13d+buyZ2593vO93xPW3t7O2ZmZqmZqtknYGZmVsQ3KDMzS5JvUGZmliTfoMzMLEm+QZmZWZJ8gzIzsyT5BmVmZknyDcrMzJLkG5SZmSWpfz0/3NbWNsWXnWhra6O9vZ329va2El5rim9PcXuWblJ7e/vsPXkBt2dOj9sT3KaxWj7zjqDq1L9/f9raevxdaglpa2sL/0tNv3796NevX3d+9eWyz2UK5/ZsgroiqFayyy67AHDBBReU+rpfffVVqa9n5ZttttnC9uTJk7v8+ZTrUX7zzTfNPoXkxA8S+rebdtppAfjiiy+ack7WGI6gzMwsSb5BmZlZklquiy/uj6/W/VF21561jhlmmCFs19LFZ62lqEvWXXt9kyMoMzNLUstFUEVRU1H2VcoD39ZYr776arNPoVf07//dx/frr79u8pmYNYYjKDMzS5JvUGZmlqSW6+KLDRo0CIDnn38+7HvooYcAWHHFFQEYNWpUOHbllVcCnltizaPuaHVBTzPNNOGY9tU61y7Vrr2ieUpTTTVVh33rrLMOADfddFM49vLL382HnXvuuYFsfhPAxhtvDMB9990X9n300UelnrulxRGUmZklqa2eZIJm1pFS6vCBBx4Y9h199NFd/t57770XtgcOHAiUk0DRl2vHVXsC/vbbbxvynn25PWPTTz89AB9//DGQjyweeOABAFZdddUy3urh9vb2FXvyAtXac9ZZZw3bn332GQCff/55p6/14Ycfhu0BAwYAxZ/DWspN6f0Arr76agB23HHHTl+zJD1uT2iNa7S3uBafmZm1rJYZg5ppppkA2HfffcO+oqf5+IkUYJZZZgnbzzzzDACLL754I06xJWii86GHHgrk20tte9VVV4V9arPzzjsPaFwENaX485//DHS8TgHmnXfe3j6dbot7JqQo7X3YsGEAvPPOOx1+7rrrrgOy6Cem63TzzTcP+0488UQABg8eHPYtscQSQNaeHl/uuUb3ltTDEZSZmSXJNygzM0tS8l18GlD99a9/DeTrrCkEjQdGFeJPPfXUQH7QdaGFFmrsySZGbRUPXj/66KNA1vVSNCi9zz77hO1//vOfQJbSf+yxx3b4+ThVupVqopXZlVGZPg5ZinQ81WHEiBG534u7pI477rgen0czFaW9L7PMMkDWFQfw5Zdf1vxaV1xxRdh31113AflpJboulTx1xhlnhGPVkjbsO6eeeioAu+66a9g344wz5n4m/kxrKZtPP/20F87OEZSZmSUq+TRzPWEWDSrPOeecQH7Q9Jprrsn9/HzzzReOnXbaaUA+Vb27T88pp0XraX7++ecH4IUXXgjH1C5F7SnxNaHX0lOvUvUhS/dV6jRk6dP1Srk9a7HUUksB8PTTT4d9iuL333//sO+EE04AiqM39RbEadQ90NA08x6+LtD9lPC41qIirSFDhgD5p/+Sn/JbNs18scUWA+C3v/0tANtss004puuv2qrNcWS83XbbAfCXv/wl7DvkkEOA7NqO6d+4k3qpTjM3M7PW5BuUmZklKckkibgLrrIrSrW6AD755JMO++68804gm/80zzzzhGMaCDzggAPqOp+iygopW2211QC49957gdpm58figXvNWVEixHLLLReOaS7VbrvtFvapi6+n3TitRl17cZfdzjvvDMCYMWPCvsr5PTfffHM4VlLXXvK6e03omoqrUqj7SvULR48eHY4df/zx3T3FllX0uXvyySeB7LP8/vvvd/g9VTGBrErISiutBMDSSy8djo0fPz73WpB91+rajr8/6v3uqeQIyszMkpRUkoTuwHryh6wquSoYb7jhhuFY0ROnqiC/8sorQP5OX5mCDt1/mkttUD+ONCdMmADkk0dEA576+bgytFJIl1xyybBPFQNmnnlmAJ599tlwTJFa/ESmn/vggw/qOv/U2rO74uutqCq5Bu6vv/56AEaOHBmOdTdhR68FsMkmm2gz2SSJ7tK0iddffz3s0/WmFPQf//jHjXr7lkiSePjhhwFYYYUVwj5Vix87diyQjyyrXXP6nuyqur7S/hXNxlFTtcoeTpIwM7OWldQYlJ6Qtt5667Bv0UUXBbKxpaI+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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 32/100, d_loss=0.168, g_loss=0.456                                                                                                                        \n",
      "epoch = 33/100, d_loss=0.136, g_loss=0.460                                                                                                                        \n",
      "epoch = 34/100, d_loss=0.183, g_loss=0.485                                                                                                                        \n",
      "epoch = 35/100, d_loss=0.176, g_loss=0.532                                                                                                                        \n",
      "epoch = 36/100, d_loss=0.194, g_loss=0.488                                                                                                                        \n",
      "epoch = 37/100, d_loss=0.213, g_loss=0.411                                                                                                                        \n",
      "epoch = 38/100, d_loss=0.167, g_loss=0.475                                                                                                                        \n",
      "epoch = 39/100, d_loss=0.175, g_loss=0.492                                                                                                                        \n",
      "epoch = 40/100, d_loss=0.191, g_loss=0.459                                                                                                                        \n",
      "epoch = 41/100, d_loss=0.151, g_loss=0.431                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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IkQcglZIVen+DVSYJIk8Wi4Sh0eVoh//m77ssssAuOKKKwCYPn16uPb73/8eKA3j7b333gBsttlmAAwbNqzbd8/gb2KvTZKIn+m8ttE0yXPPPVfV5zpJwszMCivJJImFF144HB9xxBFAac0yKTf6e+2114DSJACNFj755JNwbuTIkQDcd999Ndxx2iZOnBiO11prLcAJEY3y5JNPhuP5558fgB122CGca8LIqdD0tv78888DWZQEYPXVVwfghz/8YTin5KaddtoJgB/96EfhmhIs1lsvG/gcffTRQP5C9d4i/m++4YYbgNJndNCgQQA89NBD3X5e59ZZZ51wTjse6Nn+zne+U7d79QjKzMyS5A7KzMySlGSI75e//GU47hrai4ebGlJqmAqwwQYbANC/f38gCxECXH/99d2+68EHHwTg7bffBuCcc86p6d5TpLAewDHHHANkdQmtPvr16weUVobYcsstgZ7Xe+wt4kn4//znPwCceeaZAJx33nnh2jvvvAOU/g3YYostgCxxYvfddw/X/vjHPwLwz3/+M5yba665ALjnnnuA0vVoWmfVbhSyU9vGLrzwQgBOPfXUcE6bESp0FyelKHwX/w70+1OVlHryCMrMzJKU1Ajq/fffB7LV4Xk++uijcKwJ1Lw6XFoVPt9884VzSoOM62/ts88+QPaWNbOUyiKK65mlklbeLrR0QWn7eusEj5wqpagHwPrrrw/AT3/6U6C0KoEMHz48HKvOoeoYqroMwI033gjAddddF8794Q9/APL/bc8777xA6d+YdnD66acD2XIHJe9AaVUdyRtpif7W3nvvveHc97//fSCLQtWTR1BmZpakJEZQTz/9NJCNnPLim6qPFS/cUwp5Xsq0Rg233nprOPe73/2u28/99a9/BbL4czu99W633XbdzsV7Q1ntHnvsMSB7s4znT8vRcx0vMo8XVPcm8dyP9mrTXEe8REJ7u8XP9aOPPgpkc87xfNPPfvYzoPy/6VVWWSUcx99VdHPPPXc4Hjx4cMk1Rapm5gc/+AEAl1xySTinueu8ZT+ihbtQ/eLdrjyCMjOzJLmDMjOzJLUs3nPllVeGY20aKHGigtJAFZ5TmXyoLC00Dv/FyREyadIkAF599dWZ33TBnHzyyUCWMALZFuO/+MUvWnJP7eCEE04Ix9/61reALGwybty4cE0h6HgjQj2D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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 42/100, d_loss=0.186, g_loss=0.408                                                                                                                        \n",
      "epoch = 43/100, d_loss=0.197, g_loss=0.524                                                                                                                        \n",
      "epoch = 44/100, d_loss=0.207, g_loss=0.419                                                                                                                        \n",
      "epoch = 45/100, d_loss=0.180, g_loss=0.420                                                                                                                        \n",
      "epoch = 46/100, d_loss=0.185, g_loss=0.434                                                                                                                        \n",
      "epoch = 47/100, d_loss=0.172, g_loss=0.470                                                                                                                        \n",
      "epoch = 48/100, d_loss=0.177, g_loss=0.464                                                                                                                        \n",
      "epoch = 49/100, d_loss=0.237, g_loss=0.478                                                                                                                                                                                                                           \n",
      "epoch = 50/100, d_loss=0.189, g_loss=0.467                                                                                                                        \n",
      "epoch = 51/100, d_loss=0.174, g_loss=0.492                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 52/100, d_loss=0.164, g_loss=0.412                                                                                                                        \n",
      "epoch = 53/100, d_loss=0.193, g_loss=0.429                                                                                                                        \n",
      "epoch = 54/100, d_loss=0.178, g_loss=0.438                                                                                                                        \n",
      "epoch = 55/100, d_loss=0.177, g_loss=0.376                                                                                                                        \n",
      "epoch = 56/100, d_loss=0.205, g_loss=0.561                                                                                                                        \n",
      "epoch = 57/100, d_loss=0.166, g_loss=0.429                                                                                                                        \n",
      "epoch = 58/100, d_loss=0.227, g_loss=0.512                                                                                                                        \n",
      "epoch = 59/100, d_loss=0.174, g_loss=0.390                                                                                                                        \n",
      "epoch = 60/100, d_loss=0.203, g_loss=0.486                                                                                                                        \n",
      "epoch = 61/100, d_loss=0.158, g_loss=0.351                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAHtpJREFUeJzt3Xm0lVX9x/H3VRDBCUXAAWIqsTQwk5xSE5LUVCgHDKKVtIzIjHLVUkpd6S8X2aCmRubSFi2HSmMQNRJUyERFEERIBgdC0VRAxBlF7+8P++7ne+597rlnPvu59/P6x+N+Ds957r7PufvZe3/3dzc0NjYiIiISm+3qfQEiIiJp1ECJiEiU1ECJiEiU1ECJiEiU1ECJiEiU1ECJiEiU1ECJiEiU1ECJiEiU1ECJiEiUOhTz5oaGBqWd+J/GxsaGcs+h+kyoPituY2NjY/dyTqD6zFF2fYLq1CvkO68elEjbtK7eF9DGqD7rQA2UiIhESQ2UiIhESQ2UiIhESQ2UiIhESQ2UiIhEqagwc2k7dt11VwDeeOONUGabV3bokNwWH374Yc5/RSR+222X9D2y/N1VD0pERKKkBkpERKKUuSG+Bx54ILw+7rjjAHj33XdDWceOHQHYtm1bbS+szjZs2BBed+/+0YL3zZs3A9ClS5dw7IMPPgCgc+fOQDKsB9DQ0NCsbMaMGQCceuqp1bjsTHr99dfDaxsqTau7NIcccggAixcvrtLViWR7WM9TD0pERKKUmR6UTfr5SX3rNbz99tuhrLUn2Cxq+nRu/+/LrNfkj59wwgkALFiwIByzAIinn34agAEDBrT4eQDHH388ADvssAMA7733Xjk/Sib17dsXgNmzZwOw8847h2OF3G/+aXbUqFEA/Pvf/wbgnXfeqdRlthv+/jTdunVrVrZ27VoANm7cGMrmzJkDJCMCvXv3Dsfawu/C6mafffYJZddddx0AM2fOBOAb3/hGOGZ/Izz/97Te1IMSEZEoNRTT44ghE29r1/vJT34SgFWrVlX7OqLKvu2fICdOnAjANddcA8CmTZvCMXtiHDp0KADnnHNOOPbxj38cgN12263Fz0l7eq2EWOqzVj3wJ598EoADDjigWh/xWGNj4yHlnCCG7/usWbPC65NPPhnInXPecccdAXjttdcAuPbaa8OxCy+8sMXzPv744wB85jOfKfRSyq5PqF6dnnnmmUDynbefD+DII48E0ued33zzTQB23333UGbz1LvssguQO2plKhHGrmzmIiKSWWqgREQkSpkZ4tt///2BZGjkf9cD5HZZ77vvPiAJQa+WWIak3LnC65122gmAQYMGAbBw4cJwzLrvaWz477nnniv6M8tVz/rcfvvtw2sb8rChI0gCG9566y0A7r777nCsT58+ALzyyitA4RPMNoHfv3//Ui65EJkc4rN6/8c//gHAMccck/f99t3v2rUrkLsE4JFHHgHg4IMPDmWjR48G4G9/+1uxlxb1EJ8tq7FlOEOGDAnHtm7dCsAee+zR7N9NmjQJgHvvvTeU3XbbbQD06NEDyA0k2bJlC1CZoXAN8YmISGZlpgd12GGHAfDwww83O+Yn6SyMutqT3bH1oDp16tSszELCi60L36NouuDZh5mnfWap6lmffsLXnjx9r7MQtkDc34s2ce/D0s28efOAJFjF87kQy1hwnskelHniiScA+PSnP93smK9jf6+2xAcA3HjjjQB8/etfB4oKqY66B2Xh4r/85S+BZMQJkjo68MADAVi6dGk4ZqMlFiAFyd8LW0xuS0wAFi1aBMB3vvOdUJZvVCYf9aBERCSz1ECJiEiUMpNJwtZApPHZENpiJolC2ERoJfguu628Hz58OJA7pLLvvvsCSYAAwPvvv1+x66gVP2RU7NCesZ/b//z5hviGDRvW4rnaWx5JH2wzd+5cID3Dia3nGzNmTFHnt98DwLRp04C4siWUasKECeH17373OyCpSxvOg2T4ed26dUBuAJDxw/Vr1qwB4J///CcAzzzzTDhmWSlqRT0oERGJUmaCJOyp3k9om2InTSshtiCJarFJV3ta8xP4FrjiV/avXr26pM/Jan3ut99+QJLnbODAgeGY3au+R3rWWWcBSRDAsmXLqnVpmQmSsEwHAA8++GDOMd/TsZ5oaxn4qyTqIImmP7/dZwBTp061z272Xssas379+lB2/fXXA3D++ec3e7/9rfW9XmWSEBGRdiczPag///nPQJJzyrMxVqjd+H1Wn/gL4XuptkjPFpb6Jyebb7H8h5A7Xl2MrNdnod8jG+uvQVb4zPSgfBZxq0erJ39v/ec//wFy5/lqOOccXQ/Kzxv5UQzIzb9pc8WWW8/fe1aXp59+eiibPn16zjn931T723DE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6XzIkCHNymzjPvve+ewdFX76r1uYufV+AJYvXw7AEUcc0eL7/QiILZGw77v16iHJ5u+zk69evbqUSyxFpnpQXt++fQFYu3Zti+/x9579vbBgCd+78gFF5VIPSkREMivKMHPPnppsbxf/xGlZt21BquTyPSdjT0rtMadhqay3Yz2pCy64IBw7//zzgWRur9hw6rb0e7DQcN/rsbknv8DbRkWszvy29nPnzgWSnpRf2GyLfSux6Lc9KWSpiP+7ahnOqzUXXQz1oEREJEpqoEREJErRB0nEKuZJ/SxSfVZc3YIk2qjMBknYFjs2tGqh+ZBsXHreeeeFslpt4KkgCRERySz1oEqkJ/7KUn1WnHpQlZXZHlSs1IMSEZHMUgMlIiJRin4dlIiINFfFLCTRUA9KRESiVGwPaiOwrhoXkjF9KnQe1edHVJ+VV4k6VX0mortHM95rKqg+i4riExERqRUN8YmISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJQ6FPPmhoaGxmpdSNY0NjY2lHsO1WdC9VlxGxsbG7uXcwLVZ46y6xNUp14h33n1oP6nsbGRxkbdOxKXt99+m7fffruUf7qu0tfSzqk+60ANlIiIREkNlIiIRKmoOagBAwZwxRVXMGLEiGpdT0k6d+4cXr/zzjslnaOhobApkI4dO7Jt27aSPiMrOnXqFF5v3bq1jlciXbp0afU9P/zhD8PrK6+8spqXE4Xttkueqz/88MM6XknbscMOO4TX7733HgAdOnzUPNTz7516UCIiEqWGYgIDKhGBsv322wPwwQcflHuqIK31z8f/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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 62/100, d_loss=0.158, g_loss=0.418                                                                                                                        \n",
      "epoch = 63/100, d_loss=0.138, g_loss=0.420                                                                                                                        \n",
      "epoch = 64/100, d_loss=0.171, g_loss=0.390                                                                                                                        \n",
      "epoch = 65/100, d_loss=0.189, g_loss=0.530                                                                                                                        \n",
      "epoch = 66/100, d_loss=0.140, g_loss=0.561                                                                                                                        \n",
      "epoch = 67/100, d_loss=0.199, g_loss=0.611                                                                                                                        \n",
      "epoch = 68/100, d_loss=0.194, g_loss=0.552                                                                                                                        \n",
      "epoch = 69/100, d_loss=0.174, g_loss=0.472                                                                                                                        \n",
      "epoch = 70/100, d_loss=0.151, g_loss=0.516                                                                                                                        \n",
      "epoch = 71/100, d_loss=0.151, g_loss=0.563                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3Xu4FVUZx/Ev3vGGoqIgiChXBRWJRElTk0tleHnwQok9qYSmWKQlmWlZpA9phpSiPkSISV5CNB4pA/IGiaYiiQGCdw0RRQQUFT39Ye+atc+ZM2dfZvZec/h9/nGc2Wf2nHVmWLPWete7WtTV1SEiIhKaLWp9ASIiInFUQYmISJBUQYmISJBUQYmISJBUQYmISJBUQYmISJBUQYmISJBUQYmISJBUQYmISJC2KuXDLVq0qHnaia233tptf/zxxzW7jrq6uhaVniOE8gyFyjN1q+vq6vao5AQqzwIVlyeoTH3FPPMlVVAh2GOP6B554403anglEqdFi8/uOaXQqrmXa30BzYzKswZyV0GpUgqbKiYRSYvGoEREJEiqoEREJEi56+ITyZvtttvOba9YsQKAdu3aAdGYnYg0pBaUiIgESS2ozcA222zjtj/66KMmP7/VVtFtsWnTpkyuqbnZeeedAXjvvffcvv322w+A9evXu33WcjI77LCD296wYUOWlyiSO2pBiYhIkFRBiYhIkJp9F9/UqVPd9vDhw2t4JdWzxRafvXfYnKQtt9zSHTvjjDMA+OCDDwBYsmSJOzZu3DgALr30UrfvmWeeKem7+/fvD8C8efNKvexcs649/x679dZbG/38BRdcAMD777+f7YWJZMz+vfn000/TP3fqZxQREUlBs2tBffLJJ0BUq/tGjBgBwMaNG6t6TdUwbNgwtz1t2jQA1q1b1+Bz1pryQ5+NhTzffffdbl+pLajOnTsD+WpBWYADFAY5lHOOSZMmJX7OWrUDBw4EClv45X735sLuzwEDBrh9M2fOBKJy7datmzv25ptvAlFvgX+O5pDxZPDgwW772GOPBWDMmDFAOq2Znj17ArB48WK3b/fddwfgrbfecvuyaDkZtaBERCRIza4FFddyMnHjLj169Mj8mqrBWk0QhTLbG9Brr73mjvlvk1A4UdRC0JctW1b2dUyZMqXsn62VUaNGue2xY8eWdY41a9YAyfef/7kTTzwRaB5v8sXYdttt3ba1cu68804guk8B+vXrB8ATTzwBwDXXXOOOWUj+mWee6fb546sAL7zwgtvu0KEDUJi/86ijjgLgoYceKvdXqTmbNvLSSy+5fW3atAGSWzN2b3bv3t3tsykQr7/+uttnvVDWcvLv0Wq38tWCEhGRIKmCEhGRIFW9i2/RokUAHHTQQamdM66bpE+fPgCcd955bt/IkSOBbAf1QrBy5UoA9t57bwCeeuopd8zKyv776quvumOnnnoqAAsWLKjKdYYirluv2IUxL7vsMiC5a8//eVvPrDl27Vk33ocfftjgWMuWLd22Bd5YSH7Xrl3dMetysjD8Aw44wB2z+9q/n/v27QvAwoULgegZB1i1ahVQWNZ57tozFuS1dOlSt+/3v/89kBzy/de//hWAF1980e278sorgcLsMXa/Wve/HxCx5557Vv4LlEAtKBERCVKLUt7kQluu+JZbbgHgnHPOafQzWWWLzsMS5TvuuCMAc+fOdftsgNnCzHv37u2O3X777UD8G3DW8lCecZKeHxts9lsPSa2xlD1ZV1f3uUpOUGp5Xn755UBh2P4ll1wCRPciRIP8lnvQD9w5/fTTAZgwYQIAP/vZz9yxm2++GYBOnTq5fVaeb7/9NgDvvvtuKZdciorLE8q/R//+97+77eOOOy7p/E2ey1r9EAVXDRkyxO178sknAXjwwQcBGD9+vDs2evTo4i64CMU882pBiYhIkFRBiYhIkHLdxZd07W3btgWigdUMvjs3XVIPPPCA227dujUAjz76KABXXXWVO2Yz79Pkdzkk/b3yUJ677LILAMuXL3f7dtttt0Y/b3OerMyrrGpdfO3btwcK59LU589POvzww4Goi89fAsYCdebPnw/AnDlz3LGJEycW/BxAr169ADj//POBTLtQa9rF5wd73XDDDQ2O33bbbQB885vfBIoPBLPuZ38+2de//nUAbrrpJqDwuW1qnl8p1MUnIiK5lbtMEsXW4KtXr874SirXo0cP/vjHP3LooYdmcv57770XKBxUtRaNheGfffbZ7tiPfvQjIMoTBzB58mQAnn76aaBw9noxmlM4teU7tPxvACeffDIA22+/PVDYCu3YsWMVr652/Ewl9Vmr0zJEQBS2bG/5lt8Nokwk9hkrV4haThZSDVGARXOdOmLPa1xL3c9JaC3OUsuhfmYZgIcffrikc2RJLSgREQlS7sagTjrpJLc9ffr0BsetLzXrN6qQx0wsjNfWGqqfr8z37LPPuu0DDzzQrqvB5+w+ueOOO9w+P4N6pUIuT1PMs2LjMZA8JlMFVQ8zj2OTd/2ys0mhdn/695vts2kQNqYCcN999wGF+eCq2HKq6RiU5RCEqAXvTxFZsWJF0ncCxfdm2DSBWbNmAXDEEUe4Y7bGmf93KZfGoEREJLdUQYmISJByEyRh3QJx3Xq+vA+WWvO6krT2VgZJs8ot19ymTZvcPvu8LX4GUYi6BafYgoQQDW7nISClElZWVq5xgTqW07DG3XrBsawkfte8ZXuwbjx/gUzbt3btWqAwpNzy8llAwOZk6NChbttC7z//+c+7fUldfKUGKlmZW75UP1+nZaLxs0v4uRHTphaUiIgEKfggCcvInRTKmlW+vSQhD+r/6U9/AuC0004DCt+gWrVqBcQvBx/HytafTGlsUTl/ELVcoZWnf09Z6z2uDIy1Ji0nXFrfbcoI1w8iSMKeX39yqS1Vbi3TuAXxLETfz+Fnk3D9vHE2aboKWcprGiQxb948t23Pm99bZIFRlv+xEjvttBMQPd+2wCRELeJdd93V7YsLVS+GgiRERCS3gh+D8lOkSHGmTp0KRP3W/lovpbK327i33eeff77s84bO/z39JcPrs0z6xbacbC0fW5Pn6KOPdscsJNsfT4gL084Ta6nvs88+bt9jjz0GRGNKjz/+uDt2/PHHA9HvGzcWe9ZZZ7ltS3FkLS3/Xs8ws3nmrBVty9xbCiiIepP8sVBLS5S0skOx7G9mk/L9FpQpt9VUKrWgREQkSKqgREQkSEF28flNc3/p7fpqERwRKr8s2rRpA2TTLWRLREOUldrvash7mH8cP1dcfZZFOo5l8PBD+U337t2Bwmz7999/P1DYTWXlaedKYxC8mqyLzpZmh/jyKEX//v3dtnWRnnLKKQDcddddFZ07FPbsrl+/Hoh+v8ZkscjoL37xCwAGDRrk9tkqCNWiFpSIiAQpyDDzpGuyNwqIwiFrIbSwaBtMhSgcumvXrgA899xz7lilrSrLMg3RgL+fk6/cN6zQytPCdiH57dTuQbsvbeAfYPHixSV9p/1t/L+RZfMu4w05iDDzrFnL8ic/+QkQTSSFqPflsMMOc/uSAl6aUNMw8+HDh7tty4fns3vGyqPU59xvtVsAj00R8FmL2LLUQ+m5/ozCzEVEJLdUQYmISJCC6uJLGlT2riHLSyhaaF1SPpuTY7Px/W7RclkgRFzuPlsGAeCEE04o6/whl2eawSYW5GDl6HclWneeLTkBFS2xvVl08RlbjmLp0qVun+WQs7lkUNHfsqZdfH7mhnfeeafRz1n3nL8IqnXHxS022rNnTyDqrofoGR43bhxQGPhkXYF+t6k/j60U6uITEZHcCiLMvG3btkDyAGYoLadq8Ze69t+oG+Pn1uvRowcQZX32c+WV25qy1m3c3+HSSy8t65whshZL3BLbabByjFtE0lq+fqup3AHozY0tUz5p0iS376tf/SpQfOsjZGvWrHHbdu/42Uvsntl3332Bwgw8FixyyCGHAPCHP/zBHbN9l112mdtnYfwWmONn6J84cSIQZVSHbIPV1IISEZEgBTEGtWzZMgC6dOnS4Fi1lnAvVS3HTPw3bPv7+WMZNtHZ3pz89Zr22muvcr7SjZn4b/6dOnUC4vu2SxXaGJQ/bmGtmCzyj/nPn2Xr9lup/t+1/rEmnt0gxqDSWN+sFC1btnTb1gJI6d+Omo5BxfH/HbjnnnsAOPnkk4FoXS2AV155BYhaXH5eP9vnr/lkY1bWi+OvJGFjUGmUqcagREQkt1RBiYhIkGoWJOF3FcV17ZnQuvZCEFcm/kzw+gPx/iBx0qC7dY9cccUVbt+IESMKzuVLo2svVHGZGyxYxQ9gKZcFq1jeRIi6EJNCy/MWLGFde36mE1tS3O7ZSnPzAfTr1w+ABQsWNDhm3Yz+9TQH/r8D9ad3+PfJ7bffDkSZZWyRR4jCyy24AqJn3Zbu8M9l5fzPf/4z9rvSphaUiIgEqWYtqIULF9bqq5sly44NMHv2bCDK9OznhLPs2Zbba9SoUe6YTexdu3at29e6dWsgmgLg5+Da3NgCjQcffHCDY9YK8JeFt5aQTZ6EaGE9W8AvrmWa1ykVcRnX7ff1pze0atUKKLzPymVl9cUvfhGIFkP0NadWU7H8qSn+M94YvzfkkUceAaLWkq9du3ZA9VryakGJiEiQVEGJiEiQajYPKu5789S1Edq8nbi5M5Zdwl8iwwambQkOy2EGcPXVVwPwne98x+2zgdi4RfvSbOaHVp5J/Hxvffr0AaK5fP5gs82l8rN81OfPt0p50bkg5kHFBeXY7zl9+nSgcLmWYixatMhtW1fW5MmTAbjpppvKv9hkwc2Dyop1U9s8Sj+oYvTo0QDMnDmz4u/RPCgREcmtqgRJ+AN2N954Y6Ofs7esPLWkQhH3hlo/CwFEIdIzZswACrNMWGvAAiMgyrMV11qywIwlS5ZUdO15061btwb7bPDY5wdMNCaLpbpDEnffjBkzBojyvw0cONAdmzVrVqM/HxdQYixXnR+2//Of/7yMK948+dNUbNvKvnPnzu5YtaeWqAUlIiJBCiIXn2XUzVPoeZ7GTJI0lTW9Wtm0m0t5BiSIMag4EyZMAGDFihUAXHfddSX9vN8ytRao5YX0M3ynrFmPQfmtU1sNYeTIkQBcdNFF7lgxvQLF0hiUiIjkliooEREJUhBdfHmkLql0qTxTF2wXXyks6wREGSGS/s367ne/67bHjx+f5qU06y4+nwVXpdmdF0ddfCIikltqQZUp5Dd+y4VWP1w0ZCGXZ041ixZUQHLVgvIXbsxioc00qAUlIiK5pQpKRESCVLPlNiQ7STPuJVv+InJJCw+KZCnUbr1S6QkSEZEgldqCWg28nMWF5EzHlM6j8vxMsynPgFpNaZRpzcszIM3mHg1EUeVZUhSfiIhItQTzuiciIuJTBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkFSBSUiIkHaqpQPt2jRoi6rC8mburq6FpWeo1rlucUW0XvIp59+Wo2vLFmeyjMnVtfV1e1RyQlUngUqLk9onmXaosVnj25dXWm/WjHPfEkVlORTqJWSZOrlWl+A78c//rHbHjt2bA2vpGxBlWc5WrVqBcDatWtTPW+pFVMp1MUnIiJBUgUlIiJBalFK86w59p+WK5Qxk3L7f6dOnQrAOeec4/Z9+OGHlV5O2UIpz2bkybq6us9VcoI8lueWW27ptj/55JM0T11xeUI+yzQrxTzzakGJiEiQFCSRc6W2nC655BIAzjjjDACGDx+e+jU1N/VbqdOmTXPHrAW6YcOG6l9YIHbddVcA1qxZk/q5O3fu7LaXL1/e5OdTbjU1KxbN60f1btq0qVaXUxS1oEREJEiqoEREJEgKkihTngb1d9xxR7f95ptvFuzLcg5DKUIpzx122AGAhx56yO079NBD7fyN/tyMGTMA2H///d2+Pn36APDxxx9XelnlyHWQhJW1X+bWNVWjbqmggyS23357AN5//32gsBvPuknnz58PwEcffeSOtW3bFoDZs2e7feeeey4AK1asyOJSHQVJiIhIbqkFVaZQ3viL4YfeWii5vVW99NJL1biEJtWiPPfcc08AVq1a5fYNHjwYgJkzZ7p9t9xyCwAjR44ECjNzWOto2223bXB+e5t99NFH3b5+/foB0az+DOW6BZXkV7/6ldv+wQ9+AEQtiKefftod69atW5pfG3QLKsm6deuAwp6UJEk9BWlSC0pERHJLLagy5akF5U/Gve6664Dobcrvqy53PMp/4yr3HLUoT2tF+uHLW2+9NQBf+cpX3L45c+YAsNNOOwHROBXAv//9bwC22267kq7Vysne/AE2btxY0jmaULMWVNy4UVL49zHHHOO2rbV5/PHHA9HYHsSPPVmPwLvvvgvAXnvt1eA6/BbskUceWeRv0UBuW1DFPJN33XWX2z799NOB7HN4qgUlIiK5pQpKRESClGkXX1yeuL/97W8AHHfccW7fVltt1eBz5bIuhbhzpRlSnacuPmuyQ2EWhP9fQ1HnsC7BF1980e278847Abj66qvdvldffbWsa6xmeXbt2hWAZcuWFXVeCzKxbiq/zGzbuuesi7Apdi/27t3b7XvmmWeK+tki1ayLz+8asvLx8zza8+4H7xTDyizpno17xnfbbTe3XUG2i1x18VkZQ/I0Bws532abbRrs69+/PwD/+te/srhEdfGJiEh+pdaCuvbaa922LU5mbyv+JDAb/IyzcuVKIJpMCtEbpl1nXE3/9ttvu32tW7cuOGeHDh3cdq9evQCYNWtWo9dQrDy1oPy3V7/8/n8NRZ3Dwqj/+9//un3Wqqp/znLkqTzjggD69u0LFLYKnnjiCaDwDdbux5df/mz9OwuygGhCcEoTUavegrJgh7lz51bytamxfzMsVyBUtFhfrlpQ/u+58847Fxx7/PHH3ba1dm36A0SBO9YKW79+vTvWpUsXoHASb7n5D9WCEhGR3FIFJSIiQUptuY2LLrrIbffs2ROAli1bAsXH09scBn8uQ6Wx+P6gvc1j2VxYMEBcF1z9YAmfP8B68MEHA9FAqd+cP+qoo1K5zrzxu8Vt28rniiuucMfmzZvX4Gf/8pe/FPy/LXvi/+zll18e+12h+8c//gHAa6+95va1b9++yZ/zf8dvf/vbAIwfPx4onF/25z//GSjsjvK78Ov71re+BVTUrZc71hVfv1sPon9Lb7vtNrfvhhtuaPD5Cy+8EIiynfjP/KRJk4DCYZKBAwemcu1x1IISEZEgVRwkcc011wBw8cUXF3UOq6nfeustt8/e8O1adtllF3fMZogXG1qa9Lk0c0zlYVA/KQfXIYccAsSHNvuBJk899RQAHTt2BOCEE05wx+67777UrjUP5RnHytiyS3z5y192xyxDxW9/+1u3b9CgQUA03WLo0KHu2B577AGklh8xkyAJa13vu+++bt/SpUuB6E3bz8xhrSnLewhRBg97zovN9n7PPfcAMGTIELfPz4QSc/1FnbdIuQiSuOCCC4CoBQpRGZ1yyikA3H333Q1+zg/FX7JkCRAFl/gtVptS4k8TKpeCJEREJLeaRS4+G+uCaOlte3vyQyoPO+yw1L4z5Dd+e8tNejNNerscMGCA27Y3ffu831dtrYc0hFye9VkrCKLWjoWLWysIonDd119/3e2zVoZN7LX1eCDKfp5SDrSqhZnbM2etQbtnIN18bnauuHvXcsmdeuqpqX1fPZm3oPxJ3uWuIZZURtaqGjNmjNvXrl07AJ5//nm3z+5DG//bfffd3bE0x/PUghIRkdxSBSUiIkFKLcy8lj744AO3bYP/1ly2AT/fCy+84Lb322+/jK+u+vxupvqs+R7HwnJvvvlmt8+6GiwYxp9VHsfKvUbLnGciqdvEjlnX3ZQpU9yxr33taw0+b92vFlThZ+Zo06YNUHg/54G//EjaVq9e7bbjyt+ypGTYtVc1aTwzFrjkBzMZy9DjL5YZt6z7gw8+CMCJJ54IlJ8pIg1qQYmISJByHSRhec/8iaj7778/EE2ctNxRUH6m7TghD+q/8sorQPwkRns7j5vIZ2+jSaG7/v1y1VVXAVHuRZ/9bfwB86TQ1NDK86CDDnLbKWcZB+In4N56661A4cRHG8QuQ66XfLdQdXuefX6uQpuYmvXieuQkzPydd94BCvMPluq5554DooQLWU0WV5CEiIjkVq7HoKxv1E+HYm+cb7zxBgCf+1z00pPUgrJWQxXexDJhY28Qhf3GGT16NBD9nv6aSPZzSSmh/HGAH/7whwBMnTrV7bPz2d/mS1/6UnG/QGB+97vfpXYua9EC7LPPPkD8eIrdnwcccEBq310NaT479vYe13Iy999/v9vO6/OaFUtN5t9zxfj+97/vtm0yro0tNjXunCW1oEREJEiqoEREJEi5DpKwgX5buBCiHH+WSdrPjWb5pvzQ1WLE5foLZVDfsmj4izbaPrtuP5TU8qDZ5/0cXEni7pMHHngAgJ/+9Kdu32OPPQZEs9ZtoBWSu/tCKU8L7vC74KwL2fKcWRkCPPnkk0D0+/rdIfZ3GDdunNs3bNgwADp16gREXVoQ5bfzM6NYUIsfGlyk3ARJ+OXpZzSoz3L+de/ePfNripGLIAlT7L/rFkz2n//8x+2bPHkyEHUT+tNy0gyYUJCEiIjkVq5bUKNGjQLg17/+tdtnEyHtzdPyoTWm3AHeUN74kyaRpqlbt25AtCw5RJMC33vvPbfPJgPuvffeJZ2/muVpf3O792u55pKfH3LGjBlA4XpoNtn3N7/5DVDY2mhC8C0oezaTgnp8lpW/2M+nrNm0oPxj1uL391m+PctA709JsakoKV2jWlAiIpJPqqBERCRIuZsH5S9meP311zc4bl1MfjdJkjzOozjiiCPcdrlde/Z7+7n5bHDeAgUgCqawz82ZM8cdu+OOOxp8fvr06WVdTzVZYMiaNWuAwswE1bZgwQK3bfes391i3ahpZkGpNetiffjhhxscs9897r62uVGLFi3K8Oqah6RFXP1j9uzOnz/f7TvmmGOAKPgszW69UqkFJSIiQQq+BWWZuS18PC47ua9GIahVZfm2GlP/LdSW3QZo3749EC2i52fO7tq1a4NzXXvttQXn8EOmrbV00kknuX1NBaWEwELh7U382GOPdcds2xYghMJpDFmKC/237y4hOCJ4dt/06dOnwTFvGgdQmMvxwAMPbPBzljnh4osvBgqzcFhvi99SK3V6RV75z3X9Z9LPtWktKD/jjv0NbDFOf4pDmgsWFkMtKBERCVLuwsz9/tS48aOsw61NLcPM/Tcam0TnT4hduXIlEL0l+pN4bbKjjX184xvf8K8HKOyjtrctW6vIWrL+5/wyv/DCC4Fo4mqxsi5Pf5zM7hsL4b733nvjrsdt29to69atgSiDNkQh9qWugzV48GAAFi9e7PZ17NgRgEceecTts7E/+5uXMF4WbJi5tWiOPPLIJj8b9+9T3DNuE57tPgU4/PDDgcLJv/azdl/bhGmIclAuXLgw7lJyFWZu022g4T1pY8cQrYcXty6elb1fppqoKyIigiooEREJVPBBEvXlMSw8bf5AZdJgr+Uc/N73vuf2zZ07F4jCluO6S/wlnq2rwJr5q1atavB5v9lfatdetcQtW21de34Yrf0u/hIuNsi8cePGgs9A1B109NFHA9C3b193zLpRbQltiJZFsawIPus+9bsj7e9Vy1D4NPj3mQU6WRYNf8HRpJ9LYsERvXr1cvtsocm4sps2bRoAp512WlHnrza7B8pdbv3ZZ59t9Jj/O1t3q5UHwPnnnw9EC2jWMtOKWlAiIhKk3ARJ2Bu/hUlDFILrD1pXSyi5+IrhtwaszOzvbmG6EIVfjx071u375S9/CZT/JlesWpbn2Wef7bYnTJgAFN5TflhuY6xl73+22AF+06FDB6BwgNtCfcsQbJCELYQ3ZMgQIHpTh8LfvRh2P1sLyg8wsX8r4npdysjBmXmQhH9vpNlqsR4XP6deEvtua8X5QRKWCCENCpIQEZHcUgUlIiJByk0Xn803sbkKEMX3Jw2yZqUWXVLWRPeXt6iUP0fCuld69+7t9tlga9aD9LXs4ovrWvHvKcs/+IUvfKGSyytgARd+7kJ/TloKgu3is5yPdu8VO3fM+Jk9unTpAkSL62UoV/OgfNaFOnz48KI+b9l4bM5kVl2P6uITEZHcCj7M3GpvC8v1w3htaeLNRZotJxsktgwIEGUrqHa+rVqLeyv039IHDBhQ8Dn/mG0XO7hvn7dw6OXLl5dxxflx3nnnAXDjjTe6fdYLsmLFCqAwUMHuSysna235n/ND9G3BPWncmWeeCUQt1bPOOssds0AI/9+B+tnLK2k1xWWnKYVaUCIiEqTgx6AsxNGyaa9bt84ds/77ESNGVPuychVmnsSf6Ovn7Ku2PJWn3ydv23HhyoMGDQIKM3JXUbBjUO3atQOi+83C6yF6vm1CeC0nidaT2zGo+vyJ4FlPH0miMSgREcktVVAiIhKk4Lv4LNx33rx5QGGuLeue2rBhQ7UvK9UuqXPPPdftmzhxYqWnzaU8dfHlRFBdfH63ki1fcuWVVwJw/fXXu2MW9BBgzs1m08WXNVsiBpIXMFUXn4iI5FaQLSh/ueLZs2cD0cTGoUOHumMWGlmLTM9640+XyjN1QbWg4ljvyJQpU9y+YcOGNflzWU0cbYJaUClTC0pERHJLFZSIiAQpyC6+et8JRN14/mBrpYt6VSLvXVK1LLs4eS8i2d/tAAAAi0lEQVTPAAXfxZczzaaLr0ZdpA2oi09ERHKr1Fx8q4GXs7iQxtRfPMtXw7f/jimdp+rlaUJpOf1f7sszQGmUqcoz0mzu0UCycxRVniV18YmIiFSLuvhERCRIqqBERCRIqqBERCRIqqBERCRIqqBERCRIqqBERCRIqqBERCRIqqBERCRIqqBERCRI/wPk9A7VcTVpTAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 72/100, d_loss=0.214, g_loss=0.436                                                                                                                        \n",
      "epoch = 73/100, d_loss=0.144, g_loss=0.628                                                                                                                        \n",
      "epoch = 74/100, d_loss=0.210, g_loss=0.526                                                                                                                        \n",
      "epoch = 75/100, d_loss=0.141, g_loss=0.458                                                                                                                        \n",
      "epoch = 76/100, d_loss=0.168, g_loss=0.517                                                                                                                        \n",
      "epoch = 77/100, d_loss=0.153, g_loss=0.479                                                                                                                        \n",
      "epoch = 78/100, d_loss=0.242, g_loss=0.578                                                                                                                        \n",
      "epoch = 79/100, d_loss=0.156, g_loss=0.524                                                                                                                        \n",
      "epoch = 80/100, d_loss=0.177, g_loss=0.479                                                                                                                        \n",
      "epoch = 81/100, d_loss=0.150, g_loss=0.549                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3WeQXMXVxvG/yDmLJBA5J4EAA8YYE4xNjkUGm1BgUgHGQAECXmwDLmIRJYILg4tgbJMMCIMFBkwWQeQsEUXOOez7wX76ntkdzc7sTui7en5fGO4dzc723pm+p/v06UFdXV2YmZnlZopOvwEzM7Nq3EGZmVmW3EGZmVmW3EGZmVmW3EGZmVmW3EGZmVmW3EGZmVmW3EGZmVmW3EGZmVmWpmrkyYMGDXLZif/p6uoa1N/XaEZ7zjTTTAB8+umn/X2pjsqlPQeQd7u6ugb35wXcnhX63Z7gNo3q+cw7giq5YcOGMWzYsE6/DcvPhE6/gQHG7dkBDUVQlp+7776702/BzKwlHEGZmVmW3EGZmVmWPMQ3mZltttkA+OijjwD4+OOP07nddtsNgGuuuab9b8zMrBtHUGZmlqVBjWxY6BTJQhnSoocPHw7A2LFj07Huf+8vv/wyPZ5++ulb+XZqKkN7lszYrq6uVfvzAm7PCv1uT3CbRk4zNzOz0nIHZWZmWXKSxAD01VdfATDttNMC8O23307yuapEYWYD09prrw3AiBEjAPjxj3+czg0a9N9RtmmmmSYd0zTAN998A8ASSyyRzr3yyisV/y4+vxUcQZmZWZayj6CmmGKKiv/G3nqqqf779mNvrohgyy23BODaa69N5959990er6/XUPp1teeUzfzzzw/Ud2ez2GKLpcfPPfdcy95TWey9994AXHzxxemYrr1akag1h8p2PfXUUwB8/fXXdf07fQcMHlyUy9NSCo0oTK7uvPNOoGgjfedB9Wu6e1Q1YULPKk/x30099dTNe7PdOIIyM7MsZRVBac5k3333TcfOO+88oIgKxo0bl86tvvrqAOy///7p2IEHHljxmueff356fOSRRwJw7rnnpmNDhw4Fyh89xLuYiRMnTvJ548ePB2CRRRZp9VvKniLM7777Lh2bcsopAbj11lvTsV/96lcAzDXXXEBllP2b3/wGKKIs650+54qOFlxwwR7ntOQhLn345JNPAJhjjjnSMX1+L7/8cgCGDBmSzl111VVA5fdJrSh49tlnB+CDDz5o6PfJ0Z/+9Kf0WBGR2q8ZIwExCmslf6rMzCxL7qDMzCxLHaskEYdElKCgYbybbropndOk5/PPPw/A0ksvnc4pFI8h+VJLLVXxc7744ov0+L777gNg1llnTcdWW201AL7//vuG3n9ulQ822GCD9DgOT0FlsoQmPnOb8G9ne951111A8Tf/+c9/ns7peomJNxrae/PNN4Haw3nxWtS/a/TaapIsKklMN910AGyyySbp2BZbbAHAnHPOCcA666yTzmlIT22sNofie2KGGWbo8XOqfY/pbxjPbb755gD861//Aiq/H3pRikoSSnp64YUXJvmczz//PD3WNMmee+6Zjp144okAvP/++0DlEHgtuvbjEGwtriRhZmal1bEIKk6ynX322UCxoGzGGWdM5+add16guLOK1bd1N3TMMcekYz/60Y+AImng8ccfT+d22GEHAF5++eV0rK8pqLlFUAsvvHB6HH8/qLxLrHb3mYN2tqcWIOoajAkjWogYox5NLt9///0ArL/++pN87fh50vNuv/32et5Ws2URQd1zzz0ALLnkkumYIqdWUGo5wCyzzAJURsP6u2rEIX4/9LLEpBQRVK3vc0VCl112WTr2y1/+smmvH9u5ztdyBGVmZuXkDsrMzLLUsXVQf/jDH9LjTTfdFID55psPqBxeOeOMM4BimEVDeFBMpGroDoo1D4cffjhQuRL9H//4BwDLL798k36LztMw1ciRIyf5HA112H91X8Px+uuvp8fVEhpmnnlmAG644Qag9oR8HOb45z//CVTWO5wcqhrEJBKtLdJ/m03JPm+88QZQDN9CMVUQ/96PPfYYAHfffXeP55dZPVM1qtLxxBNP9PnnrLfeegCMGTOmx7lLL70UKDY+bQZHUGZmlqW2RFDxrlKb6B188MHp2IsvvgjAI488AsDuu++ezunO6Le//S0Ab7/9djr3n//8ByjSeaFIVdddr6IygFVWWQWo3KSv7HTntNFGG6VjigKOPvpooDkp5QsttBBQWZfr6aefBmC55Zbr8bNz9uyzzwKVSxbqsdlmmwGVd49rrbUWAO+99x5QmYSitOj99tsvHdOIwEAWK0MsuuiiQPXUfCXvxFEORZuq6BEjg1GjRgFFajQUS0Z0TMtR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rbc7tqura9U6fq1JanV7Dhs2DIARI0akY7fddhsAhx9+OADDhw9P57788ksAvvjii3SsjXf3/W5PyOM7dKqpioGzAw88EIDTTz89HVM7zzvvvAB89NFHLXkfLnVkZmallVUEpfH8zz77rJU/pinKcMdfS6N3nt988w0Ayy67bDr2wgsvNPP9ZN+eF110EQB77LFHOqa7zemmm07vIZ1TtKN5JCgioQ033LCun6m/k+YMG/i7ZRtBXXHFFQBstdVWAEw77bR1/bttt90WgLFjx6Zj48ePb+6bm7QBE0FFun6r/Q0eeughAFZbbbWW/GxHUGZmVlruoMzMLEttH+KLE3SikP+pp54C4Ljjjuvvj2mZrq4uVl11VR566KHsh6Rq0cTnLLPMUtfzL7vsMgB22223lryfnIf41EbvvvsuAFNPPXU6p5RcDcE125prrgnAhx9+CMAzzzxT7z/NdohPSQ4aFq1G7RqHTPV43Lhx6dgaa6wBFENVLTRghvimn3769Pjzzz/vcV59wvzzzw/AxIkT+/yzZphhhlo/x0N8ZmZWTm1fqKvJ9mrUc7/yyivpmKKpBRdcEKhcrKdJ+piK+vrrrwNw8803A0Wqb7PEO7oyOvroo4H6IyeJqcCTg5jYoLtzRf9vvfVWOqcU8vXWWw+A7bbbLp3Ttbr99tunY2r3apPT//d//1fx34FEkQ7UjpwWWWQRANZdd10AFl100XRur732AirbrJdUe6viiSeeqOt5P/vZzwC45JJL+vyzqkVOjXAEZWZmWXIHZWZmWWpLksQnn3ySHs8000yTfJ7ei4bpoJioi0MutagywgILLNDj3PXXXw8U6y+g7zXOcp7Ur2XJJZcEaleEiNeEhlE1LBNrdul58W8zUNpz5plnTo/POussoLh2N91003Ru7rnnBop20VA0FMN4f/3rX9Ox+++/H4CNN964WW91UrJKklh11eKtHHDAAUCRcPPrX/86nTvzzDOB4pp67rnn0jnVhjvssMPSsauuuqpZb7E3pU+S0DUdK0NoyuLTTz9NxzSkp3Zu1TCqkyTMzKy02pIkoQoR9TrxxBPT4/POO6/X56viNsD6668PVL+T32STTYDKiG6++eYDKuufDWR33313r8+JiSCKRCdMmADAyJEj0znViVMqKcB77703ydctQ6UQ/e533XVXOqaJet2BHnrooenc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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 82/100, d_loss=0.177, g_loss=0.541                                                                                                                        \n",
      "epoch = 83/100, d_loss=0.124, g_loss=0.565                                                                                                                        \n",
      "epoch = 84/100, d_loss=0.157, g_loss=0.525                                                                                                                        \n",
      "epoch = 85/100, d_loss=0.122, g_loss=0.537                                                                                                                        \n",
      "epoch = 86/100, d_loss=0.118, g_loss=0.526                                                                                                                        \n",
      "epoch = 87/100, d_loss=0.147, g_loss=0.556                                                                                                                        \n",
      "epoch = 88/100, d_loss=0.139, g_loss=0.607                                                                                                                        \n",
      "epoch = 89/100, d_loss=0.129, g_loss=0.653                                                                                                                        \n",
      "epoch = 90/100, d_loss=0.127, g_loss=0.464                                                                                                                        \n",
      "epoch = 91/100, d_loss=0.179, g_loss=0.659                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 92/100, d_loss=0.125, g_loss=0.546                                                                                                                        \n",
      "epoch = 93/100, d_loss=0.156, g_loss=0.571                                                                                                                        \n",
      "epoch = 94/100, d_loss=0.168, g_loss=0.559                                                                                                                        \n",
      "epoch = 95/100, d_loss=0.200, g_loss=0.558                                                                                                                        \n",
      "epoch = 96/100, d_loss=0.142, g_loss=0.602                                                                                                                        \n",
      "epoch = 97/100, d_loss=0.152, g_loss=0.557                                                                                                                        \n",
      "epoch = 98/100, d_loss=0.119, g_loss=0.502                                                                                                                        \n",
      "epoch = 99/100, d_loss=0.127, g_loss=0.636                                                                                                                        \n",
      "epoch = 100/100, d_loss=0.124, g_loss=0.620                                                                                                                        \n",
      "epoch = 101/100, d_loss=0.210, g_loss=0.585                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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d5xfNPKOO+4Asms91nORRkVQIiKSW7mOoIx/QrU+WKvu69NbK6mST/zNPUFadWGLFH0fcUsnyRXjn7Ri6o9uTqz3Z53kJoLKiVxEUJv5mUBSm3DFihXhmI3VZ6nGd4unCEpERHJLDZSIiERpy3qfQGtY6OpDUAtLy108q56aW/LCZt7bILFfXqSl4XexEvm16tYTkeqzv3VbpNFS+ZtTg2onzVIEJSIiUSo7gmpoaKjIkumVYOdhi8ZB8rTQFqOArIUZWyqW36G0X1aNu9SFRLOi/pYulteeFH4X5ulaKYISEZEoqYESEZEold3FF2N46M/J6s/ZkhMiEqdSu/ZM1ndPjN9HUjmKoEREJErlRlDrgBXNvqqOahQ5VapMePTXs0Z0PSuvEtdU1zOhe7SySrqeZZU6EhERqRV18YmISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJTUQImISJS2LOfFDQ0NjdU6kbxpbGxsaO176HomdD0rbl1jY+OurXkDXc+UVl9P0DX1SvmbVwQl0jatqPcJtDG6nnWgBkpERKKkBkpERKKkBkpERKKkBkpERKKkBkpERKKkBkpERKKkBkpERKJU1kTdempo2DSnq7FR89wkX84666ywPXXqVAA6deoEwJtvvlmXc5L2K+s7dIsttgjbn376aS1PpyhFUCIiEqWGciKSepbp6N+/PwA33XRT2HfttdcCMHPmzLCvd+/eACxZsqSq55On0jwWfUL5EeisWbMAOProowHYfffdw7GVK1dW4OzCeeXmepbKrvvHH3/c5Njtt98OwHe/+92wr8JPrs80NjYe3Jo3iO16mp122ilsv//++wCsWLGp0EP37t3Dsffeew+AHXfcMezr1q0bAKtWrSr3x7b6ekIc19TfZ/b3/de//jXs89+x1aRSRyIiklvRR1CHHXYYAI8//jgAH3zwQTjWoUMHAF555ZWwb9999wWgZ8+eACxYsKAq55WnJ/7WRFB9+vQB4L///S+Q7quupDxdz1INGzYMgEceeaTJsdmzZwNw1FFHVevHt7kIasOGDQDsvPPOYZ+/t0vxmc9seiZ/4oknABg8eHCp/zT3EVTnzp0BWL9+fZNjFokCbLvttjU5H0VQIiKSW2qgREQkSlGlmVu4PmPGjLBv+fLlACxevBhID5Bat98111wT9u21114ArF69uqrnmgd2PXfbbbewb82aNWW9R9++fQF48MEHK3dibZjvcrrqqqs2+7r999+/FqeTWy+99BIAe+65Z0Xfd/78+QAMGjSoou+bB1lde2bLLaNqCgJFUCIiEqUomk0buLRW/Oc//3k4NmLECAAOPfRQAN54440m/94/tY4cORKAww8/HEgmRkL7m+S79dZbA/DRRx+FfYVJDp988kmTf+dfM3HiRAAee+yxapxim3PyySeH7awB+LfffhtIkngkzRKfbrnlFgCuvPLKFr/X2WefDcCNN94Y9lnkaslW5SZZ5JF9vxajCEpERKQMaqBERCRKUcR1W221FZDk4ls3CKSTIjbHd0ldcsklADz66KNAOoTPCue32WYbIJl13pYsW7YMgK5du4Z9VgPOX2Nj19F3Cdo1+9KXvlS182xLbr311rCdNWfM5ph8+OGHNTun2C1atChsW8WYLFYBweZGQjKfqV+/fkAyXw+y7/Gsn9nW2XWz74O99967nqdTFkVQIiISpSgiqP/85z+p/99nn33CtkVX/qm+kB/ot7TooUOHAs3XN2uLkZMNiu66665Njl133XUAjBkzpskxu46+dpxd/3feeafi59mWjBo1CoAddtgh7PNVT0wpA9bthaXhF4uafGKTPfm/+uqrYZ8lVfjIyVgNvgkTJoR9l112GZBUnPFVEzZu3FjeB8iZYin7U6ZMqd2JlEF/LSIiEqW6RVB+PKjwKd1PKCsWOdl7+HEqW19n+PDhADz00EMVOuP8sKjRngj9mkPjxo3b7L/bfvvtgfRk3h49egDJ76SUMcH2yCaXP/nkk02O+ehzwIABNTun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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epochs = 100\n",
    "batch_size = 32\n",
    "\n",
    "a = np.zeros(shape=(batch_size//2, 1))\n",
    "b = np.ones(shape=(batch_size//2, 1))\n",
    "c = np.ones(shape=(batch_size, 1))\n",
    "\n",
    "d_loss = []\n",
    "d_g_loss = []\n",
    "\n",
    "for e in range(epochs + 1):\n",
    "    for i in range(len(X_train) // batch_size):\n",
    "        \n",
    "        # Train Discriminator weights\n",
    "        discriminator.trainable = True\n",
    "        \n",
    "        # Real samples\n",
    "        X_real = X_train[i*batch_size//2:(i+1)*batch_size//2]\n",
    "        \n",
    "        # Fake Samples\n",
    "        z = np.random.normal(loc=0, scale=1, size=(batch_size//2, latent_dim))\n",
    "        X_fake = generator.predict_on_batch(z)\n",
    "        \n",
    "        # Discriminator loss\n",
    "        d_loss_batch = discriminator.train_on_batch(\n",
    "            x=np.concatenate((X_fake, X_real), axis=0),\n",
    "            y=np.concatenate((a, b), axis=0)\n",
    "        )\n",
    "        \n",
    "        # Train Generator weights\n",
    "        discriminator.trainable = False\n",
    "        \n",
    "        z = np.random.normal(loc=0, scale=1, size=(batch_size, latent_dim))\n",
    "        d_g_loss_batch = d_g.train_on_batch(x = z, y = c)\n",
    "   \n",
    "        print(\n",
    "            'epoch = %d/%d, batch = %d/%d, d_loss=%.3f, g_loss=%.3f' % (e + 1, epochs, i, len(X_train) // batch_size, d_loss_batch[0], d_g_loss_batch[0]),\n",
    "            100*' ',\n",
    "            end='\\r'\n",
    "        )\n",
    "    \n",
    "    d_loss.append(d_loss_batch[0])\n",
    "    d_g_loss.append(d_g_loss_batch[0])\n",
    "    print('epoch = %d/%d, d_loss=%.3f, g_loss=%.3f' % (e + 1, epochs, d_loss[-1], d_g_loss[-1]), 100*' ')\n",
    "\n",
    "    if e % 10 == 0:\n",
    "        samples = 10\n",
    "        x_fake = generator.predict(np.random.normal(loc=0, scale=1, size=(samples, latent_dim)))\n",
    "\n",
    "        for k in range(samples):\n",
    "            plt.subplot(2, 5, k+1)\n",
    "            plt.imshow(x_fake[k].reshape(28, 28), cmap='gray')\n",
    "            plt.xticks([])\n",
    "            plt.yticks([])\n",
    "\n",
    "        plt.tight_layout()\n",
    "        plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. Evaluate model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:01:56.728686Z",
     "start_time": "2018-08-10T06:01:56.551734Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plotting the metrics\n",
    "plt.plot(d_loss)\n",
    "plt.plot(d_g_loss)\n",
    "plt.title('Model loss')\n",
    "plt.ylabel('Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(['Discriminator', 'Adversarial'], loc='center right')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
